I. Field of the Invention
The present invention relates data processing and, more particularly, using a client proxy at a server providing services.
II. Background and Material Information
In a client-server system, a client may call a service at a server to interact with the service through any kind of communication medium, such as a network. A service is a program that makes itself available to users over a communication medium. Services typically implement standardized protocols, such as XML (Extensible Markup Language) and Simple Object Access Protocol (SOAP). Moreover, there is usually some type of web mechanism, such as Universal Description, Discovery, and Integration (UDDI) that enables a client to readily locate the service and its public Application Program Interface (API).
In an enterprise that uses services (referred to as a “services framework” or an “enterprise services framework”), a client can call a service provider though an API. Examples of service providers include a catalog service provider listing products from a catalog, a pricing service provider providing pricing information of products, and a purchasing service provider allowing the purchase of a product.
When a client calls the API of a service provider though a communication medium, the service provider and its corresponding business objects are instantiated. The term “instantiate” means, in an object-oriented programming environment, deploying, customizing, running and/or executing an application on an object of a particular class. An “object” means a bundle of variables (e.g., data) and related methods accessed by software. In object-oriented programming, an object is a concrete realization (instance) of a class that consists of data and the operations associated with that data. The phrase “business object” refers to a bundle of variables and related methods that can be used for describing a business process or task.
An enterprise services framework should allow a client to call a service provider. In addition, the called service provider should be able to recursively call itself or call another service provider. For example, the catalog service provider may call the API of a pricing service provider to determine the price of a product listed in the catalog. When a service provider calls another service provider, the calling service provider should retrieve from the called service provider information reflecting the most current state of the called service provider. Thus, when a call is made to the service provider that has pending actions, such as a write, the provider should perform the pending actions before the calling service provider is allowed to interact with called service provider and the corresponding business objects. Otherwise, the calling service provider might access information that is not current.